/*
    MANGO Multimedia Development Platform
    Copyright (C) 2012-2020 Twilight Finland 3D Oy Ltd. All rights reserved.
*/
#ifdef GLEXT_PROC

// ---------------------------------------------------------------------------------
// GLX_VERSION_1_3
// ---------------------------------------------------------------------------------

GLEXT_PROC(PFNGLXGETFBCONFIGSPROC, glXGetFBConfigs);
GLEXT_PROC(PFNGLXCHOOSEFBCONFIGPROC, glXChooseFBConfig);
GLEXT_PROC(PFNGLXGETFBCONFIGATTRIBPROC, glXGetFBConfigAttrib);
GLEXT_PROC(PFNGLXGETVISUALFROMFBCONFIGPROC, glXGetVisualFromFBConfig);
GLEXT_PROC(PFNGLXCREATEWINDOWPROC, glXCreateWindow);
GLEXT_PROC(PFNGLXDESTROYWINDOWPROC, glXDestroyWindow);
GLEXT_PROC(PFNGLXCREATEPIXMAPPROC, glXCreatePixmap);
GLEXT_PROC(PFNGLXDESTROYPIXMAPPROC, glXDestroyPixmap);
GLEXT_PROC(PFNGLXCREATEPBUFFERPROC, glXCreatePbuffer);
GLEXT_PROC(PFNGLXDESTROYPBUFFERPROC, glXDestroyPbuffer);
GLEXT_PROC(PFNGLXQUERYDRAWABLEPROC, glXQueryDrawable);
GLEXT_PROC(PFNGLXCREATENEWCONTEXTPROC, glXCreateNewContext);
GLEXT_PROC(PFNGLXMAKECONTEXTCURRENTPROC, glXMakeContextCurrent);
GLEXT_PROC(PFNGLXGETCURRENTREADDRAWABLEPROC, glXGetCurrentReadDrawable);
GLEXT_PROC(PFNGLXQUERYCONTEXTPROC, glXQueryContext);
GLEXT_PROC(PFNGLXSELECTEVENTPROC, glXSelectEvent);
GLEXT_PROC(PFNGLXGETSELECTEDEVENTPROC, glXGetSelectedEvent);

// ---------------------------------------------------------------------------------
// GLX_VERSION_1_4
// ---------------------------------------------------------------------------------

GLEXT_PROC(PFNGLXGETPROCADDRESSPROC, glXGetProcAddress);

// ---------------------------------------------------------------------------------
// GLX extensions
// ---------------------------------------------------------------------------------

// GLX_ARB_create_context
GLEXT_PROC(PFNGLXCREATECONTEXTATTRIBSARBPROC, glXCreateContextAttribsARB);

// GLX_ARB_get_proc_address
GLEXT_PROC(PFNGLXGETPROCADDRESSARBPROC, glXGetProcAddressARB);

// GLX_AMD_gpu_association
GLEXT_PROC(PFNGLXGETGPUIDSAMDPROC, glXGetGPUIDsAMD);
GLEXT_PROC(PFNGLXGETGPUINFOAMDPROC, glXGetGPUInfoAMD);
GLEXT_PROC(PFNGLXGETCONTEXTGPUIDAMDPROC, glXGetContextGPUIDAMD);
GLEXT_PROC(PFNGLXCREATEASSOCIATEDCONTEXTAMDPROC, glXCreateAssociatedContextAMD);
GLEXT_PROC(PFNGLXCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC, glXCreateAssociatedContextAttribsAMD);
GLEXT_PROC(PFNGLXDELETEASSOCIATEDCONTEXTAMDPROC, glXDeleteAssociatedContextAMD);
GLEXT_PROC(PFNGLXMAKEASSOCIATEDCONTEXTCURRENTAMDPROC, glXMakeAssociatedContextCurrentAMD);
GLEXT_PROC(PFNGLXGETCURRENTASSOCIATEDCONTEXTAMDPROC, glXGetCurrentAssociatedContextAMD);
GLEXT_PROC(PFNGLXBLITCONTEXTFRAMEBUFFERAMDPROC, glXBlitContextFramebufferAMD);

// GLX_EXT_import_context
GLEXT_PROC(PFNGLXGETCURRENTDISPLAYEXTPROC, glXGetCurrentDisplayEXT);
GLEXT_PROC(PFNGLXQUERYCONTEXTINFOEXTPROC, glXQueryContextInfoEXT);
GLEXT_PROC(PFNGLXGETCONTEXTIDEXTPROC, glXGetContextIDEXT);
GLEXT_PROC(PFNGLXIMPORTCONTEXTEXTPROC, glXImportContextEXT);
GLEXT_PROC(PFNGLXFREECONTEXTEXTPROC, glXFreeContextEXT);

// GLX_EXT_swap_control
GLEXT_PROC(PFNGLXSWAPINTERVALEXTPROC, glXSwapIntervalEXT);

// GLX_EXT_texture_from_pixmap
GLEXT_PROC(PFNGLXBINDTEXIMAGEEXTPROC, glXBindTexImageEXT);
GLEXT_PROC(PFNGLXRELEASETEXIMAGEEXTPROC, glXReleaseTexImageEXT);

// GLX_MESA_agp_offset
GLEXT_PROC(PFNGLXGETAGPOFFSETMESAPROC, glXGetAGPOffsetMESA);

// GLX_MESA_copy_sub_buffer
GLEXT_PROC(PFNGLXCOPYSUBBUFFERMESAPROC, glXCopySubBufferMESA);

// GLX_MESA_pixmap_colormap
GLEXT_PROC(PFNGLXCREATEGLXPIXMAPMESAPROC, glXCreateGLXPixmapMESA);

// GLX_MESA_query_renderer
GLEXT_PROC(PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC, glXQueryCurrentRendererIntegerMESA);
GLEXT_PROC(PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC, glXQueryCurrentRendererStringMESA);
GLEXT_PROC(PFNGLXQUERYRENDERERINTEGERMESAPROC, glXQueryRendererIntegerMESA);
GLEXT_PROC(PFNGLXQUERYRENDERERSTRINGMESAPROC, glXQueryRendererStringMESA);

// GLX_MESA_release_buffers
GLEXT_PROC(PFNGLXRELEASEBUFFERSMESAPROC, glXReleaseBuffersMESA);

// GLX_MESA_set_3dfx_mode
GLEXT_PROC(PFNGLXSET3DFXMODEMESAPROC, glXSet3DfxModeMESA);

// GLX_MESA_swap_control
GLEXT_PROC(PFNGLXGETSWAPINTERVALMESAPROC, glXGetSwapIntervalMESA);
GLEXT_PROC(PFNGLXSWAPINTERVALMESAPROC, glXSwapIntervalMESA);

// GLX_NV_copy_image
GLEXT_PROC(PFNGLXCOPYIMAGESUBDATANVPROC, glXCopyImageSubDataNV);

// GLX_NV_delay_before_swap
GLEXT_PROC(PFNGLXDELAYBEFORESWAPNVPROC, glXDelayBeforeSwapNV);

// GLX_NV_present_video
GLEXT_PROC(PFNGLXENUMERATEVIDEODEVICESNVPROC, glXEnumerateVideoDevicesNV);
GLEXT_PROC(PFNGLXBINDVIDEODEVICENVPROC, glXBindVideoDeviceNV);

// GLX_NV_swap_group
GLEXT_PROC(PFNGLXJOINSWAPGROUPNVPROC, glXJoinSwapGroupNV);
GLEXT_PROC(PFNGLXBINDSWAPBARRIERNVPROC, glXBindSwapBarrierNV);
GLEXT_PROC(PFNGLXQUERYSWAPGROUPNVPROC, glXQuerySwapGroupNV);
GLEXT_PROC(PFNGLXQUERYMAXSWAPGROUPSNVPROC, glXQueryMaxSwapGroupsNV);
GLEXT_PROC(PFNGLXQUERYFRAMECOUNTNVPROC, glXQueryFrameCountNV);
GLEXT_PROC(PFNGLXRESETFRAMECOUNTNVPROC, glXResetFrameCountNV);

// GLX_NV_video_capture
GLEXT_PROC(PFNGLXBINDVIDEOCAPTUREDEVICENVPROC, glXBindVideoCaptureDeviceNV);
GLEXT_PROC(PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC, glXEnumerateVideoCaptureDevicesNV);
GLEXT_PROC(PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC, glXLockVideoCaptureDeviceNV);
GLEXT_PROC(PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC, glXQueryVideoCaptureDeviceNV);
GLEXT_PROC(PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC, glXReleaseVideoCaptureDeviceNV);

// GLX_NV_video_output
GLEXT_PROC(PFNGLXGETVIDEODEVICENVPROC, glXGetVideoDeviceNV);
GLEXT_PROC(PFNGLXRELEASEVIDEODEVICENVPROC, glXReleaseVideoDeviceNV);
GLEXT_PROC(PFNGLXBINDVIDEOIMAGENVPROC, glXBindVideoImageNV);
GLEXT_PROC(PFNGLXRELEASEVIDEOIMAGENVPROC, glXReleaseVideoImageNV);
GLEXT_PROC(PFNGLXSENDPBUFFERTOVIDEONVPROC, glXSendPbufferToVideoNV);
GLEXT_PROC(PFNGLXGETVIDEOINFONVPROC, glXGetVideoInfoNV);

// GLX_OML_sync_control
GLEXT_PROC(PFNGLXGETSYNCVALUESOMLPROC, glXGetSyncValuesOML);
GLEXT_PROC(PFNGLXGETMSCRATEOMLPROC, glXGetMscRateOML);
GLEXT_PROC(PFNGLXSWAPBUFFERSMSCOMLPROC, glXSwapBuffersMscOML);
GLEXT_PROC(PFNGLXWAITFORMSCOMLPROC, glXWaitForMscOML);
GLEXT_PROC(PFNGLXWAITFORSBCOMLPROC, glXWaitForSbcOML);

// GLX_SGIX_dmbuffer
GLEXT_PROC(PFNGLXASSOCIATEDMPBUFFERSGIXPROC, glXAssociateDMPbufferSGIX);

// GLX_SGIX_fbconfig
GLEXT_PROC(PFNGLXGETFBCONFIGATTRIBSGIXPROC, glXGetFBConfigAttribSGIX);
GLEXT_PROC(PFNGLXCHOOSEFBCONFIGSGIXPROC, glXChooseFBConfigSGIX);
GLEXT_PROC(PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC, glXCreateGLXPixmapWithConfigSGIX);
GLEXT_PROC(PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC, glXCreateContextWithConfigSGIX);
GLEXT_PROC(PFNGLXGETVISUALFROMFBCONFIGSGIXPROC, glXGetVisualFromFBConfigSGIX);
GLEXT_PROC(PFNGLXGETFBCONFIGFROMVISUALSGIXPROC, glXGetFBConfigFromVisualSGIX);

// GLX_SGIX_hyperpipe
GLEXT_PROC(PFNGLXQUERYHYPERPIPENETWORKSGIXPROC, glXQueryHyperpipeNetworkSGIX);
GLEXT_PROC(PFNGLXHYPERPIPECONFIGSGIXPROC, glXHyperpipeConfigSGIX);
GLEXT_PROC(PFNGLXQUERYHYPERPIPECONFIGSGIXPROC, glXQueryHyperpipeConfigSGIX);
GLEXT_PROC(PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC, glXDestroyHyperpipeConfigSGIX);
GLEXT_PROC(PFNGLXBINDHYPERPIPESGIXPROC, glXBindHyperpipeSGIX);
GLEXT_PROC(PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC, glXQueryHyperpipeBestAttribSGIX);
GLEXT_PROC(PFNGLXHYPERPIPEATTRIBSGIXPROC, glXHyperpipeAttribSGIX);
GLEXT_PROC(PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC, glXQueryHyperpipeAttribSGIX);

// GLX_SGIX_pbuffer
GLEXT_PROC(PFNGLXCREATEGLXPBUFFERSGIXPROC, glXCreateGLXPbufferSGIX);
GLEXT_PROC(PFNGLXDESTROYGLXPBUFFERSGIXPROC, glXDestroyGLXPbufferSGIX);
GLEXT_PROC(PFNGLXQUERYGLXPBUFFERSGIXPROC, glXQueryGLXPbufferSGIX);
GLEXT_PROC(PFNGLXSELECTEVENTSGIXPROC, glXSelectEventSGIX);
GLEXT_PROC(PFNGLXGETSELECTEDEVENTSGIXPROC, glXGetSelectedEventSGIX);

// GLX_SGIX_swap_barrier
GLEXT_PROC(PFNGLXBINDSWAPBARRIERSGIXPROC, glXBindSwapBarrierSGIX);
GLEXT_PROC(PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC, glXQueryMaxSwapBarriersSGIX);

// GLX_SGIX_swap_group
GLEXT_PROC(PFNGLXJOINSWAPGROUPSGIXPROC, glXJoinSwapGroupSGIX);

// GLX_SGIX_video_resize
GLEXT_PROC(PFNGLXBINDCHANNELTOWINDOWSGIXPROC, glXBindChannelToWindowSGIX);
GLEXT_PROC(PFNGLXCHANNELRECTSGIXPROC, glXChannelRectSGIX);
GLEXT_PROC(PFNGLXQUERYCHANNELRECTSGIXPROC, glXQueryChannelRectSGIX);
GLEXT_PROC(PFNGLXQUERYCHANNELDELTASSGIXPROC, glXQueryChannelDeltasSGIX);
GLEXT_PROC(PFNGLXCHANNELRECTSYNCSGIXPROC, glXChannelRectSyncSGIX);

// GLX_SGIX_video_source
#ifdef _VL_H
GLEXT_PROC(PFNGLXCREATEGLXVIDEOSOURCESGIXPROC, glXCreateGLXVideoSourceSGIX);
GLEXT_PROC(PFNGLXDESTROYGLXVIDEOSOURCESGIXPROC, glXDestroyGLXVideoSourceSGIX);
#endif

// GLX_SGI_cushion
GLEXT_PROC(PFNGLXCUSHIONSGIPROC, glXCushionSGI);

// GLX_SGI_make_current_read
GLEXT_PROC(PFNGLXMAKECURRENTREADSGIPROC, glXMakeCurrentReadSGI);
GLEXT_PROC(PFNGLXGETCURRENTREADDRAWABLESGIPROC, glXGetCurrentReadDrawableSGI);

// GLX_SGI_swap_control
GLEXT_PROC(PFNGLXSWAPINTERVALSGIPROC, glXSwapIntervalSGI);

// GLX_SGI_video_sync
GLEXT_PROC(PFNGLXGETVIDEOSYNCSGIPROC, glXGetVideoSyncSGI);
GLEXT_PROC(PFNGLXWAITVIDEOSYNCSGIPROC, glXWaitVideoSyncSGI);

// GLX_SUN_get_transparent_index
GLEXT_PROC(PFNGLXGETTRANSPARENTINDEXSUNPROC, glXGetTransparentIndexSUN);

// GLX_NV_copy_buffer
GLEXT_PROC(PFNGLXCOPYBUFFERSUBDATANVPROC, glXCopyBufferSubDataNV);
GLEXT_PROC(PFNGLXNAMEDCOPYBUFFERSUBDATANVPROC, glXNamedCopyBufferSubDataNV);

#endif // GLEXT_PROC

// ---------------------------------------------------------------------------------
// GLX Extensions
// ---------------------------------------------------------------------------------

#ifdef GLX_EXTENSION

GLX_EXTENSION(ARB_get_proc_address)
GLX_EXTENSION(ARB_multisample)
GLX_EXTENSION(ARB_vertex_buffer_object)
GLX_EXTENSION(ARB_fbconfig_float)
GLX_EXTENSION(ARB_framebuffer_sRGB)
GLX_EXTENSION(ARB_create_context)
GLX_EXTENSION(ARB_create_context_profile)
GLX_EXTENSION(ARB_create_context_robustness)
GLX_EXTENSION(ARB_robustness_application_isolation)
GLX_EXTENSION(ARB_robustness_share_group_isolation)
GLX_EXTENSION(SGIS_multisample)
GLX_EXTENSION(EXT_visual_info)
GLX_EXTENSION(SGI_swap_control)
GLX_EXTENSION(SGI_video_sync)
GLX_EXTENSION(SGI_make_current_read)
GLX_EXTENSION(SGIX_video_source)
GLX_EXTENSION(EXT_visual_rating)
GLX_EXTENSION(EXT_import_context)
GLX_EXTENSION(SGIX_fbconfig)
GLX_EXTENSION(SGIX_pbuffer)
GLX_EXTENSION(SGI_cushion)
GLX_EXTENSION(SGIX_video_resize)
GLX_EXTENSION(SGIX_dm_buffer)
GLX_EXTENSION(SGIX_swap_group)
GLX_EXTENSION(SGIX_swap_barrier)
GLX_EXTENSION(SGIS_color_range)
GLX_EXTENSION(EXT_scene_marker)
GLX_EXTENSION(SGIS_blended_overlay)
GLX_EXTENSION(SUN_get_transparent_index)
GLX_EXTENSION(MESA_copy_sub_buffer)
GLX_EXTENSION(MESA_pixmap_colormap)
GLX_EXTENSION(MESA_release_buffers)
GLX_EXTENSION(MESA_set_3dfx_mode)
GLX_EXTENSION(SGIX_visual_select_group)
GLX_EXTENSION(OML_swap_method)
GLX_EXTENSION(OML_sync_control)
GLX_EXTENSION(SGIX_hyperpipe)
GLX_EXTENSION(MESA_agp_offset)
GLX_EXTENSION(EXT_fbconfig_packed_float)
GLX_EXTENSION(EXT_framebuffer_sRGB)
GLX_EXTENSION(EXT_texture_from_pixmap)
GLX_EXTENSION(NV_present_video)
GLX_EXTENSION(NV_video_output)
GLX_EXTENSION(NV_swap_group)
GLX_EXTENSION(NV_video_capture)
GLX_EXTENSION(NV_copy_image)
GLX_EXTENSION(INTEL_swap_event)
GLX_EXTENSION(AMD_gpu_association)
GLX_EXTENSION(EXT_create_context_es2_profile)
GLX_EXTENSION(EXT_create_context_es_profile)
GLX_EXTENSION(EXT_swap_control_tear)
GLX_EXTENSION(EXT_buffer_age)
GLX_EXTENSION(NV_delay_before_swap)
GLX_EXTENSION(MESA_query_renderer)
GLX_EXTENSION(ARB_context_flush_control)
GLX_EXTENSION(NV_copy_buffer)

#endif // GLX_EXTENSION
